package nl.tno.sensorstorm.example; import nl.tno.sensorstorm.storm.SensorStormBolt; import nl.tno.sensorstorm.storm.SensorStormFieldGrouping; import nl.tno.sensorstorm.storm.SensorStormShuffleGrouping; import nl.tno.sensorstorm.storm.SensorStormSpout; import backtype.storm.Config; import backtype.storm.LocalCluster; import backtype.storm.StormSubmitter; import backtype.storm.topology.TopologyBuilder; import backtype.storm.utils.Utils; public class Main { public static void main(String[] args) throws Exception { Config conf = new Config(); conf.put(Config.TOPOLOGY_DEBUG, false); TopologyBuilder builder = new TopologyBuilder(); builder.setSpout("spout", new SensorStormSpout(conf, new BlockFetcher(), true, 1000), 1); builder.setBolt( "average", new SensorStormBolt(conf, 1000, WindowBatcher.class, AverageOperation.class, "sensorId"), 2).customGrouping( "spout", new SensorStormFieldGrouping("sensorId")); builder.setBolt( "printspeed", new SensorStormBolt(conf, 1000, PrintParticleSpeedOperation.class, null), 2) .customGrouping("average", new SensorStormShuffleGrouping()); builder.setBolt("printparticle", new SensorStormBolt(conf, 1000, PrintOperation.class, null), 2) .customGrouping("printspeed", new SensorStormShuffleGrouping()); if ((args != null) && (args.length > 0)) { conf.setNumWorkers(3); StormSubmitter.submitTopologyWithProgressBar(args[0], conf, builder.createTopology()); } else { LocalCluster cluster = new LocalCluster(); cluster.submitTopology("test", conf, builder.createTopology()); Utils.sleep(10000); cluster.killTopology("test"); cluster.shutdown(); } } }